#include "json.h"
#include "json_private.h"

JSON_VAR::JSON_VAR()
{
    del();
    p = NULL;
    type = JSON_TNIL;
    name = "";
}

JSON_VAR::JSON_VAR(JSON_BOOL *ptr, string _name)
{
    del();
    p = ptr;
    type = JSON_TBOOL;
    name = _name;
}

JSON_VAR::JSON_VAR(JSON_NUM *ptr, string _name)
{
    del();
    p = ptr;
    type = JSON_TNUM;
    name = _name;
}
JSON_VAR::JSON_VAR(JSON_STR *ptr, string _name)
{
    del();
    p = ptr;
    type = JSON_TSTR;
    name = _name;
}
JSON_VAR::JSON_VAR(vector<JSON_VAR> *ptr, string _name)
{
    del();
    p = ptr;
    type = JSON_TARR;
    name = _name;
}
JSON_VAR::JSON_VAR(JSON_OBJ *ptr, string _name)
{
    del();
    p = ptr;
    type = JSON_TOBJ;
    name = _name;
}

JSON_VAR::JSON_VAR(JSON_NUM val, string _name)
{
    del();
    p = new JSON_NUM(val);
    type = JSON_TNUM;
    name = _name;
}

JSON_VAR::JSON_VAR(JSON_BOOL val, string _name)
{
    del();
    p = new JSON_BOOL(val);
    type = JSON_TBOOL;
    name = _name;
}
JSON_VAR::JSON_VAR(JSON_STR val, string _name)
{
    del();
    p = new JSON_STR(val);
    type = JSON_TSTR;
    name = _name;
}
JSON_VAR::JSON_VAR(vector<JSON_VAR> val, string _name)
{
    del();
    p = new vector<JSON_VAR>;
    *(vector<JSON_VAR> *)p = val;
    type = JSON_TARR;
    name = _name;
}
JSON_VAR::JSON_VAR(JSON_OBJ val, string _name)
{
    del();
    p = new JSON_OBJ();
    *(JSON_OBJ *)p = val;
    type = JSON_TOBJ;
    name = _name;
}